<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>录入分类信息</title>
    <link rel="stylesheet" href="/layui/css/layui.css">
</head>
<body>
<form class="layui-form">
    <div class="layui-form-item">
        <label class="layui-form-label">分类名</label>
        <div class="layui-input-inline">
            <input class="layui-input" type="text" name="name">
        </div>
    </div>

    <div class="layui-form-item">
        <label class="layui-form-label">描述信息</label>
        <div class="layui-input-inline">
            <textarea class="layui-textarea" name="dscp"></textarea>
        </div>
    </div>

    <div class="layui-form-item">
        <label class="layui-form-label">图片</label>
        <div class="layui-input-inline">
            <button type="button" class="layui-btn" id="ID-upload-demo-btn" lay-options="{accept: 'file', exts: 'jpg|jpeg|png|gif|webp'}">
                <i class="layui-icon layui-icon-upload"></i> 单图片上传
            </button>
            <div style="width: 132px;">
                <div class="layui-upload-list">
                    <img class="layui-upload-img" id="ID-upload-demo-img" style="width: 100%; height: 92px;">
                    <div id="ID-upload-demo-text"></div>
                </div>
                <div class="layui-progress layui-progress-big" lay-showPercent="yes" lay-filter="filter-demo">
                    <div class="layui-progress-bar" lay-percent=""></div>
                </div>
            </div>
        </div>
    </div>

    <div class="layui-form-item">
        <label class="layui-form-label">上级分类</label>
        <div class="layui-input-inline">
            <select name="parentId"></select>
        </div>
    </div>

    <div class="layui-form-item">
        <label class="layui-form-label">分类名</label>
        <div class="layui-input-inline">
            <input type="radio" name="recom" value="0" title="不推荐" checked>
            <input type="radio" name="recom" value="1" title="推荐">
        </div>
    </div>

    <div class="layui-form-item">
        <div class="layui-input-block">
            <input type="hidden" name="pic">
            <button class="layui-btn" lay-submit lay-filter="add">录入</button>
        </div>
    </div>
</form>
<script src="/layui/layui.js"></script>
<script>
    layui.use(['form', 'upload', 'element'], () => {
        const form = layui.form;
        const upload = layui.upload;
        const element = layui.element;
        const $ = layui.$;

        //初始化上传组件
        initUpload();
        //初始化下拉列表
        getFirstCategory();

        //表单的提交
        form.on('submit(add)' , (data)=>{
            //ajax
            $.ajax({
                url: '/category/add',
                data: data.field,
                dataType: 'json',
                success(result){
                    if (result.code == 0) {
                        parent.layer.msg('录入成功', {icon: 6});
                        parent.layer.closeAll("iframe");
                    } else {
                        layer.msg(result.msg, {icon: 5});
                    }
                },
                error(){
                    layer.msg('请求失败', {icon: 5});
                }
            });
            //阻止表单的自动提交
            return false;
        });


        //获取一级分类的方法
        function getFirstCategory(){
            $.ajax({
                url: '/category/search',
                data: {parentId: 0},
                dataType: 'json',
                success(result){
                    //遍历查询结果
                    var html = '<option value="0">请选择父分类</option>';
                    $.each(result.data, (index,category)=>{
                        html += '<option value="'+category.id+'">'+category.name+'</option>';
                    });
                    $('select[name="parentId"]').html(html);
                    form.render();
                },
                error(){
                    layer.msg('请求失败', {icon: 5});
                }

            });
        }

        function initUpload() {
            // 单图片上传
            var uploadInst = upload.render({
                elem: '#ID-upload-demo-btn',
                url: '/upload', // 实际使用时改成您自己的上传接口即可。
                before: function (obj) {
                    // 预读本地文件示例，不支持ie8
                    obj.preview(function (index, file, result) {
                        $('#ID-upload-demo-img').attr('src', result); // 图片链接（base64）
                    });

                    element.progress('filter-demo', '0%'); // 进度条复位
                    layer.msg('上传中', {icon: 16, time: 0});
                },
                done: function (res) {
                    // 若上传失败
                    if (res.code > 0) {
                        return layer.msg('上传失败');
                    }
                    // 上传成功的一些操作
                    //将图片的名字写入隐藏域
                    $('input[name = "pic"]').val(res.data);
                    // …
                    $('#ID-upload-demo-text').html(''); // 置空上传失败的状态
                },
                error: function () {
                    // 演示失败状态，并实现重传
                    var demoText = $('#ID-upload-demo-text');
                    demoText.html('<span style="color: #FF5722;">上传失败</span> <a class="layui-btn layui-btn-xs demo-reload">重试</a>');
                    demoText.find('.demo-reload').on('click', function () {
                        uploadInst.upload();
                    });
                },
                // 进度条
                progress: function (n, elem, e) {
                    element.progress('filter-demo', n + '%'); // 可配合 layui 进度条元素使用
                    if (n == 100) {
                        layer.msg('上传完毕', {icon: 1});
                    }
                }
            });
        }
    });
</script>
</body>
</html>